/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pbl_servidor;

import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.net.Socket;
import java.net.SocketException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Asuka
 */
public class RecebedorServidor implements Runnable {

    private InputStream cliente;
    private PBL_Servidor servidor;
    private String DadosUsuario;
    private Usuario user;
    private List<Usuario> listaUsers;
    Socket cli;
    private TrataCliente tc;
    private QuemEstaOnline QeO;
    private List<Socket> listaSocketsOnline;
    private ObjectInputStream Compromisso;
    private Compromisso compromisso;
    private TelaServidor  telaServidor;
    

    public RecebedorServidor(InputStream cliente, PBL_Servidor serv, Socket cli, List<Socket> socketsOnline) {
        this.cliente = cliente;
        this.servidor = serv;
        //   this.listaUsers = new ArrayList <Usuario>();
        this.cli = cli;
        listaSocketsOnline = socketsOnline;
    }

    @Override
    public void run() {
        
        while (true) {
//            int w=0;
            try {
                
                DataInputStream lendoDoCliente = new DataInputStream(this.cliente);
      
                System.out.println("Aguardando requisição do cliente!!");
                //telaServidor.exibeMensagem("\nAguardando requisição do cliente!!");
                DadosUsuario = lendoDoCliente.readUTF();
                System.out.println("Cliente respondeu - " + DadosUsuario);
               //telaServidor.exibeMensagem("\nCliente respondeu - " + DadosUsuario);
                
                    //                    trataPing p = new trataPing(DadosUsuario, cli);
                    //                    new Thread(p).start();
                                    
                try {                 
                    servidor.mandaMsgsCliente(DadosUsuario, this.cli);
                } catch (InterruptedException ex) {
                    Logger.getLogger(RecebedorServidor.class.getName()).log(Level.SEVERE, null, ex);
                }
                
            }  catch(SocketException exs){
                
                    System.out.println("offline: "+ this.cli.getInetAddress().getHostAddress());
                    servidor.MandaQuemEstaOFF("OFFLINE:".concat(this.cli.getInetAddress().getHostAddress().concat(":")));
                    listaSocketsOnline.remove(this.cli);
                    return;
                   
            }
            catch (IOException ex) {
                ex.printStackTrace();
                System.out.println("erro6: " + ex.getMessage());
                //Para d aguardar mensagens do cliente
                return;
            }

        }
    }
}
